﻿using Ewk.Math.ComputationTypes.Computables;
using Ewk.Math.Numerics;

namespace Ewk.Math.ComputationTypes.Factories
{
    class ComputableComplexFactory : IComputableFactory<Complex>
    {
        #region Implementation of IComputableFactory<T>

        public Computable<Complex> Zero
        {
            get { return new ComputableComplex(Complex.Zero); }
        }

        public Computable<Complex> Epsilon
        {
            get { return new ComputableComplex(new Complex(double.Epsilon, double.Epsilon)); }
        }

        public Computable<Complex> One
        {
            get { return new ComputableComplex(Complex.One); }
        }

        public Computable<Complex> MinValue
        {
            get { return new ComputableComplex(new Complex(double.MinValue, double.MinValue)); }
        }

        public Computable<Complex> MaxValue
        {
            get { return new ComputableComplex(new Complex(double.MaxValue, double.MaxValue)); }
        }

        public Computable<Complex> Create(Complex value)
        {
            return new ComputableComplex(value);
        }

        #endregion
    }
}
